Generally, in computer graphics, objects are represented as surfaces, with the surfaces being represented by meshes. A mesh consists of a set of vertices, or points, in multi-dimensional space, which are interconnected by edges. The edges define polygonal faces, which may be in the form of triangles, quadrilaterals, and so forth. In some computer graphic operations it is desirable to generate a representation of a surface at a finer resolution than a current representation. For a surface that is represented by one or more triangles, a subdivision surface is typically formed by dividing the upper level triangle into four smaller triangles in a regular manner, thereby to form a set of first level subdivision triangles. One or more of the first-level subdivision triangles may be further subdivided, through any of a number of subdivision levels. The subdivision surfaces defined by the subdivision triangles may be used to provide, for example complex contours for the surfaces of objects in a scene, which can allow for realistic renderings of images of the objects.
A problem arises in that, since a triangle is defined by three points in space typically, 3n coordinates are required to define the triangle, “n” coordinates for each of the three points that define the triangle in n-dimensional space. Each of the coordinates will need to be expressed as floating point numbers. Accordingly, it will be appreciated that for any scene that includes objects whose surfaces have any significant degree of complexity, the storage requirements for the database that defines the objects in the scene can be enormous.